Outputting Debug Dialog Messages

SoftwareShield ClientProtector COM Component > Debug and Release Server Versions > Outputting Debug Dialog Messages

## Outputting Debug Dialog Messages

As described in the section on Controlling Debug Output, when linking to the debug ClientProtector server you can easily control two dimensions of the debug information which is output:

- The level of detail output. (Either "coarse" or "detailed")

- The method of output. (Any of: debug strings, log files and modal dialogs)

You control this by using the values defined in the CPDEBUGFLAGS enumeration exposed by the ClientProtector COM server. These values are simply combined using bit-wise OR operators to achieve the desired effect and passed in the "DebugFlags" parameter of the StartUp function call.

To control debug dialog messages, four enumerations can be used (in combination with any others):

- DBG_DLG_COARSE - ("Dialog Coarse") Use to output modal dialog messages only when an important event happens inside the ClientProtector.

- DBG_DLG_DETAIL - ("Dialog Detailed") Use to output modal dialog messages at virtually every internal procedure as it occurs inside the ClientProtector.

- DBG_ALL_COARSE - ("All Methods Coarse") Use to output modal dialog messages (and all other debug output types) only when an important event happens inside the ClientProtector.

- DBG_ALL_DETAIL - ("All Methods Detailed") Use to output modal dialog messages (and all other debug output types) at virtually every internal procedure as it occurs inside the ClientProtector.

For example, if we only wanted detailed dialog debug messages output (which pauses processing as each dialog is displayed) we would pass DBG_DLG_DETAIL in the DebugFlags parameter of the StartUp call. Or, if we wanted to output only coarse dialog messages but detailed log-file messages we would combine them with a bit-wise or operator as in : (DBG_DLG_DETAIL | DBG_LOG_DETAIL). If we simply want to output all detailed information using every method, we can just use the DBG_ALL_DETAIL value.

An example call might look like this (C++ code):

// initialize the ClientProtector and Start it up
SSCProtector1->StartUp(MainLicenseFileName, MainLicenseFilePassword,
GlobalAuthorizationCodePassword, FingerPrintOptionsCode,
(DBG_DLG_DETAIL | DBG_LOG_DETAIL), &return_code);

Dialog debug messages are different from the other two methods because processing pauses until you dismiss each dialog. Whereas, the other two methods simply output the message and continue processing.